//package com.bins.springboot.point.http.client;
//
//import io.netty.bootstrap.Bootstrap;
//import io.netty.buffer.Unpooled;
//import io.netty.channel.ChannelFuture;
//import io.netty.channel.ChannelInitializer;
//import io.netty.channel.ChannelOption;
//import io.netty.channel.EventLoopGroup;
//import io.netty.channel.nio.NioEventLoopGroup;
//import io.netty.channel.socket.SocketChannel;
//import io.netty.channel.socket.nio.NioSocketChannel;
//import io.netty.handler.codec.http.*;
//
//import java.net.URI;
//
//public class HttpClient {
//
//    private String host;
//    private int port;
//    private String requri;
//    private String reqmsg;
//    final HttpClientHandler clientHandler;
//
//    public HttpClient() {
//        clientHandler = new HttpClientHandler();
//    }
//
//    public String getHost() {
//        return host;
//    }
//
//    public void setHost(String host) {
//        this.host = host;
//    }
//
//    public int getPort() {
//        return port;
//    }
//
//    public void setPort(int port) {
//        this.port = port;
//    }
//
//    public String getRequri() {
//        return requri;
//    }
//
//    public void setRequri(String requri) {
//        this.requri = requri;
//    }
//
//    public String getReqmsg() {
//        return reqmsg;
//    }
//
//    public void setReqmsg(String reqmsg) {
//        this.reqmsg = reqmsg;
//    }
//
//    @SuppressWarnings("finally")
//    public String connect() throws Exception {
//        EventLoopGroup workerGroup = new NioEventLoopGroup();
//
//        try {
//            Bootstrap b = new Bootstrap();
//            b.group(workerGroup);
//            b.channel(NioSocketChannel.class);
//            b.option(ChannelOption.SO_KEEPALIVE, true);
//            b.handler(new ChannelInitializer<SocketChannel>() {
//                @Override
//                public void initChannel(SocketChannel ch) throws Exception {
//                    // 客户端接收到的是httpResponse响应，所以要使用HttpResponseDecoder进行解码
//                    ch.pipeline().addLast(new HttpResponseDecoder());
//                    // 客户端发送的是httprequest，所以要使用HttpRequestEncoder进行编码
//                    ch.pipeline().addLast(new HttpRequestEncoder());
//                    ch.pipeline().addLast(new NioEventLoopGroup());
//                    ch.pipeline().addLast(clientHandler);
//                }
//            });
//            ChannelFuture f = b.connect(host, port).sync();
//            URI uri = new URI(requri);
//            DefaultFullHttpRequest request = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.POST,
//                    uri.toASCIIString(), Unpooled.wrappedBuffer(reqmsg.getBytes()));
//            // 构建http请求
//            request.headers().set(HttpHeaderNames.HOST, host);
//            request.headers().set(HttpHeaderNames.CONNECTION, HttpHeaderNames.CONNECTION);
//            request.headers().set(HttpHeaderNames.CONTENT_LENGTH, request.content().readableBytes());
//
//            // 发送http请求
//            f.channel().write(request);
//            f.channel().flush();
//            f.channel().closeFuture().sync();
//        } finally {
//            workerGroup.shutdownGracefully();
//            return clientHandler.getResStr();
//        }
//    }
//
//}
